home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh1x / sh15a.d64 / int-floppy src (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  7KB  |  255 lines

  1. 1 ; *** INTELLIGENTE FLOPPY ****
  2. 2 ; ****************************
  3. 3 ; * WRITTEN BY STEFAN ROTHER *
  4. 4 ; *   FRAUENZELLSTRASSE 26   *
  5. 5 ; *     8400 REGENSBURG      *
  6. 6 ; ****************************
  7. 7 ; *  (C) 1986 MARKT&TECHNIK  *
  8. 8 ; *        VERLAG AG         *
  9. 9 ; ****************************
  10. 10 .BA$CE18 ;START BEI 52760
  11. 20  JSR$AEFD;AUF KOMMA PRUEFEN
  12. 30  JSR$B79E;8 BIT-ZAHL NACH X HOLEN
  13. 60  STXZ1;UND ZWISCHENSPEICHERN
  14. 65  LDA#07;MASKE ZUM AUSFILTERN
  15. 70  ANDZ1;VON BIT 0-2 ERSTELLEN
  16. 74 ;
  17. 75 ;SPRUNGTABELLE
  18. 76 ;
  19. 80  BNEY1;BEI 0
  20. 85  JMPLOAD1;PRG MIT ',8' LADEN
  21. 90 Y1 CMP#01;MIT 1 VERGLEICHEN
  22. 100  BNEY2;WENN 1 ,DANN
  23. 105  JMPLOAD2;PRG MIT ',8,1' LADEN
  24. 110 Y2 CMP#02;MIT 2 VERGLEICHEN
  25. 120  BNEY3;WENN 2 ,DANN
  26. 125  JMPSAVE;ZUR SAVEROUTINE SPRINGEN
  27. 130 Y3 CMP#03;MIT 3 VERGLEICHEN
  28. 140  BNEY4;WENN 3 ,DANN
  29. 145  JMPGOTO;'GOTO'-ROUTINE AUFRUFEN
  30. 150 Y4 CMP#04;UND DASSELBE MIT 4
  31. 160  BNEY5;WENN 4,DANN
  32. 165  JMPJUMP;'JMP'-ASSEMBLERBEFEHL
  33. 170 Y5 RTS;WENN KEIN MODUS,DANN ZURUECK
  34. 180 ;
  35. 185 ;ALGORITHMUS ZUM AUSWERTEN
  36. 186 ;EINES DISKETTENWECHSELS
  37. 188 ;
  38. 190 FLOPPY LDA#08;PARAMETER FUER
  39. 200  LDX#08;'OPEN 8,8,15'
  40. 210  LDY#15;SETZEN
  41. 220  JSR$FFBA;FILE VORBEREITEN
  42. 230  LDA#00;KEIN FILENAME
  43. 240  JSR$FFBD;FILENAMEN VORBEREITEN
  44. 250  JSR$FFC0;'OPEN'
  45. 260  JMPA;ZUR DATENAUSWERTUNG
  46. 270 X LDX#08;FUER KANAL 8
  47. 280  JSR$FFC9;CMD OUT AKTIVIEREN
  48. 290  LDX#00;ZAEHLER AUF NULL
  49. 300 B1 LDAT1,X;UND VON FLOPPY
  50. 310  JSR$FFD2;PER BEFEHLSSEQUENZ
  51. 320  INX;VON 6 ZEICHEN
  52. 330  CPX#06;INHALT VON $1C00
  53. 340  BNEB1;ABFRAGEN
  54. 350  JSR$FFCC;CMD OFF
  55. 360 Y LDX#08
  56. 370  JSR$FFC6;CMD IN AKTIVIEREN
  57. 380  JSR$FFCF;BESAGTES BYTE HOLEN
  58. 385  PHA;UND ZWISCHENSPEICHERN
  59. 390  JSR$FFCC;CMD INAKTIVIEREN
  60. 395  PLA;BYTE ZURUECKHOLEN
  61. 400  RTS;ENDE DES UNTERPRG'S 'DATEN HOLEN'
  62. 410 ;
  63. 411 ;FORTFUEHRUNG DES HAUPTPROGRAMMS
  64. 412 ;
  65. 415 A JSRBIT05;BIT 5=1 (DIKETTENWECHSEL) ?
  66. 417  JSRLED;JA,DANN JE NACH BIT 6 LED AN
  67. 420  JSRX;HOLE AKTUELLES INFOBYTE
  68. 430  ANDZ2;UND FILTERE LICHSCHRANKENBIT
  69. 440  BNEA;HERAUS-BEI 1 WARTEN
  70. 450 ;
  71. 460 B JSRX
  72. 470  ANDZ2
  73. 480  BEQB;WARTE BIS BIT=1,LS-UNTERBRECHUNG
  74. 485 ;
  75. 490 C JSRLED;EINSPRUNG,WENN VORHER BIT5=0
  76. 500  JSRX
  77. 510  ANDZ2
  78. 520  BNEC;WARTE,BIS LS FREI
  79. 530 ;
  80. 540  LDAZ1;BIT 7 DES BEFEHLBYTES TESTEN
  81. 550  BPLF;BEI 1 SCHREIBSCHUTZ
  82. 560 ;
  83. 570 J LDX#$FF;WARTESCHLEIFE
  84. 580 E LDY#$FF;WEGEN SCHREIBSCHUTZ
  85. 590 D DEY
  86. 600  BNED
  87. 610  DEX
  88. 620  BNEE
  89. 630  JMPG
  90. 640 ;
  91. 650 F JSRX;WENN KEIN SCHREIBSCHUTZ,
  92. 660  ANDZ2;DANN AUF KERBE
  93. 670  BEQF;WARTEN
  94. 680 ;
  95. 690 G LDX#$02;UNBEDINGTE WARTESCHLEIFE
  96. 700 K LDY#$A0
  97. 704 I DECZ5
  98. 706  BNEI
  99. 710 H DEY
  100. 720  BNEI
  101. 730  DEX
  102. 740  BNEK
  103. 745 ;
  104. 750 ;ROUTINE ,DIE DEN MOTOR DER FLOPPY EINSCHALTET
  105. 755 ;UND AUF GESCHLOSSENES LAUFWERK PRUEFT
  106. 756 ;
  107. 760  LDX#08;KANAL 8
  108. 766 ;
  109. 770  JSR$FFC9;FUER CMD OUT
  110. 780  LDX#00
  111. 790 B2 LDAT2,X
  112. 800  JSR$FFD2
  113. 810  INX
  114. 820  CPX#05;LAENGE DES BEFEHLS
  115. 830  BNEB2
  116. 840  JSR$FFCC;CMD INAKTIVIEREN
  117. 841  LDX#08;NOCHMALS FUER NEUE ANWEISUNG
  118. 842  JSR$FFC9;AKTIVIEREN,UM
  119. 843  LDX#00;DER FLOPPY EINE KURZE
  120. 844 B4 LDAT4,X;INITIALISIERUNGZEIT
  121. 845  JSR$FFD2;ZU GESTATTEN
  122. 846  INX
  123. 847  CPX#06;DIEMAL 6 BEFEHLBYTES
  124. 848  BNEB4
  125. 849  JSR$FFCC;KANAL 8 INAKTIVIEREN
  126. 850  JSRY;LAUFWERK SCHON EINSATZBEREIT ?
  127. 860  CMP#$FF
  128. 870  BEQG;NEIN
  129. 880 ;
  130. 890  LDA#08
  131. 900  JSR$FFC3;CLOSE 8
  132. 910  RTS;ENDE DER AUSWERTUNG
  133. 1470 ;
  134. 1480 ;HIER WIRD DAS HAUPTPROGAMM JE NACH
  135. 1490 ;BEFEHLSBYTE WEITERGEFUEHRT
  136. 1495 ;
  137. 1500 LOAD1 LDA#00;KENNZEICHEN FUER
  138. 1510  STAKK+1;'LOAD ,8'
  139. 1520  JMPLOAD;ZUR LADEROUTINE
  140. 1540 LOAD2 LDA#01;ODER FUER ABSOLUTES LADEN
  141. 1550  STAKK+1;'LOAD ,8,1'
  142. 1555 LOAD JSR$AEFD;PRUEFT AUF KOMMA
  143. 1560  JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
  144. 1575  JSRGET;FILENAMEN HOLEN
  145. 1576  JMPLD;UND LADEN
  146. 1580 GET JSR$AD9A;VORAUSWERTEN UND
  147. 1590  JSR$B6A3;AUSWERTEN DES FILENAMENS
  148. 1600  STAZ4;LAENGE,
  149. 1610  STXLO;LO-ADRESSE UND
  150. 1620  STYHI;HI-ADRESSE MERKEN
  151. 1700  RTS;ZURUECK
  152. 1710 ;---
  153. 1720 GOTO JSR$AEFD;AUF KOMMA PRUEFEN
  154. 1730  JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
  155. 1750  JSR$AD8A;SPRUNGADRESSE FUER 'GOTO' HOLEN
  156. 1760  JSR$B7F7;IN 16 BIT ZAHL WANDELN
  157. 1770  JSR$A8A3;EINSPRUNG IN DIE 'GOTO'-ROUTINE
  158. 1780  JMP$A7AE;UND ZUR INTERPRETERSCHLEIFE
  159. 1790 ;
  160. 1800 JUMP JSR$AEFD;AUF KOMMA PRUEFEN
  161. 1810  JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
  162. 1830  JSR$AD8A;SPRUNGADRESSE FUR 'JMP' HOLEN
  163. 1840  JSR$B7F7;IN 16 BIT ZAHL WANDELN
  164. 1846  LDA#$A7;STARTADRESSE DES BASIC-
  165. 1847  PHA
  166. 1848  LDA#$AE;INTERPRETERS AUF STACK
  167. 1849  PHA
  168. 1850  JMP($14);UND ZUM MASCHINENPROGRAMM
  169. 1860 ;
  170. 1861 SAVE LDAZ1;WENN SAVE UND SCHREIB-
  171. 1863  BPLON;SCHUTZ ZUSAMMEN,DANN
  172. 1865  JSR$B248;'ILLEGAL QUANTITY ERROR'
  173. 1870 ON JSR$AEFD;AUF KOMMA PRUEFEN
  174. 1880  JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
  175. 1900  JSRGET;FILENAMEN HOLEN
  176. 1910  LDX#08;GERAETEADRESSE 8
  177. 1920  JSR$FFBA;FILE VORBEREITEN
  178. 1930  LDXZ4;LAENGE
  179. 1940  LDXLO;UND ADRESSE DES FILE-
  180. 1950  LDYHI;NAMENS HOLEN
  181. 1960  JSR$FFBD;FILENAMEN VORBEREITEN
  182. 1965  JSRGET16;16 BIT STARTADRESSE FUER SAVE
  183. 1967  STX$FE;MERKEN
  184. 1969  STY$FF
  185. 1971  JSRGET16;16 BIT ENDADRESSE FUER SAVE
  186. 1973  LDA#$FE;STEHT BEI $FE/$FF
  187. 1975  JMPCONT
  188. 1976 ;
  189. 1977 ;ROUTINE ZUM HOLEN EINER 16 BIT ZAHL UND AUSWERTUNG
  190. 1978 ;
  191. 1979 GET16 JSR$AEFD;KOMMA?
  192. 1981  JSR$AD8A;16 BIT ZAHL HOLEN
  193. 1983  JSR$B7F7;UND UMWANDELN
  194. 1985  LDX$14;LO-BYTE
  195. 1987  LDY$15;HI-BYTE DER ZAHL
  196. 1989  RTS;ENDE DER UNTERROUTINE
  197. 1990 ;
  198. 2000 CONT JSR$FFD8;'SAVE'
  199. 2010  RTS;ZURUECK ZU BASIC
  200. 2015 ;
  201. 2020 ;LADEN EINES PROGRAMMS
  202. 2025 ;
  203. 2030 LD LDX#08
  204. 2040 KK LDY#01
  205. 2050  JSR$FFBA;FILE VORBEREITEN
  206. 2060  LDAZ4
  207. 2070  LDXLO
  208. 2080  LDYHI
  209. 2090  JSR$FFBD;FILENAMEN VORBEREITEN
  210. 2100  LDA#00;LOAD-FLAG AUF 0
  211. 2101  STA$0A;UND MERKEN
  212. 2103  JMP$E16F;EINSPRUNG IN DIE 'LOAD'-ROUTINE
  213. 2200 ;
  214. 2340 ;ROUTINE PRUEFT BIT 6 DES BEFEHLBYTES
  215. 2345 ;UND SCHALTET BEI 1 DIE ROTE LED AM
  216. 2346 ;LAUFWERK AN.
  217. 2348 ;
  218. 2350 LED LDA#64
  219. 2360  ANDZ1;TEST AUF BIT 6
  220. 2380  BEQENDE;BEI 0 'RTS'
  221. 2390  LDX#08
  222. 2400  JSR$FFC9;CMD OUT AKTIVIEREN
  223. 2410  LDX#00
  224. 2420 B3 LDAT3,X
  225. 2430  JSR$FFD2
  226. 2440  INX
  227. 2450  CPX#05;5 BEFEHLBYTES
  228. 2460  BNEB3
  229. 2470  JSR$FFCC;CMD INAKTIVIEREN
  230. 2480 ENDE RTS;ENDE DES UNTERPROGRAMMS
  231. 2490 BIT05 LDA#32;TESTET BIT 5 DES BEFEHLBYTES
  232. 2500  ANDZ1
  233. 2530  BNEENDE;GESETZT,DANN DISKETTENWECHSEL
  234. 2540  PLA;NEIN,
  235. 2550  PLA;DANN STACK "SAEUBERN"
  236. 2560  JMPC;UND WEITER AUF DISKETTE WARTEN
  237. 2570 ;
  238. 2575 ;TABELLE VON ANWEISUNGEN UND (AKTUELLEN)
  239. 2576 ;ZWISCHENSPEICHERN
  240. 2580 ;
  241. 2610 T1 .TX"M-R";AUSLESEN DES DISKKONTROLLERS
  242. 2620 .BY00,28,1 ;DER FLOPPY (WEGEN LS)
  243. 2630 T2 .TX"M-E";FLOPPYMOTOR
  244. 2640 .BY71,198 ;EINSCHALTEN UND AUF 'READY' TESTEN
  245. 2644 T3 .TX"M-E";BEFEHLSSEQUENZ FUER
  246. 2646 .BY$18,$C1 ;LED AM LAUFWERK ANSCHALTEN
  247. 2650 T4 .TX"M-R";SCHON 'READY' ?
  248. 2660 .BY$FF,0,1
  249. 2670 Z1 .BY$00;PLATZ FUER BEFEHLSBYTE
  250. 2680 Z2 .BY$10;16 FUER 'AND' VERKNUEPFUNG (LS)
  251. 2700 Z4 .BY$00;SPEICHER FUER FILENAMENLAENGE
  252. 2705 Z5 .BY$00;ZAEHLER FUER WARTESCHLEIFE
  253. 2730 LO .BY$00;ZWISCHENSPEICHER FUER
  254. 2740 HI .BY$00;FILENAMENADRESSE
  255.